"""
特殊函数 lambda、map 和 filter 介绍
"""

# 1. lambda 函数


def add3(x):
    return x + 3


print(add3(5))
result = lambda x: x + 3
print(result)
print(result(5))


def add(x, y):
    return x + y


print(add(3, 5))
x_y = lambda x, y: x + y
print(x_y(3, 5))


# 2. map 函数
print(help(map))
# 得到 1 - 10 范围整数的平方值
i = map(lambda x: x**2, range(1, 10))
print(i)
print(type(i))
# 用列表展示结果
print(list(i))
# 将个数相同的三个整数列表相加得到求和后的列表
l = [1, 3, 5, 7, 9]
l1 = [2, 4, 6, 8, 10]
l2 = [9, 7, 5, 3, 1]
# 使用列表解析方式
l_ = [x + y + z for x, y, z in zip(l, l1, l2)]
print(l_)
# 使用 map + lambda 实现
iterator = map(lambda x, y, z: x + y + z, l, l1, l2)
print(list(iterator))

# 3. filter 过滤器
print(help(filter))
# 得到 3 - 30 之间 偶数的列表
# 使用列表解析方式
r = range(3, 30)
i_ = [i for i in r if i % 2 == 0]
print(i_)
filter1 = filter(lambda x: x % 2 == 0, r)
print(list(filter1))